python_base={
       "IDE":{
           "IDLE":["操作，100（90）",
                   "意义：IDLE是一个Pythonshell。Shell的意思就是外壳，基本说来，这是一个通过键入文本与程序交互的途径，可以利用这个shell与Python交互。IDLE本身还是一个GUI，所以在开始菜单中显示为PythonGUI、100（90）"],
           "JUPYTE":["操作，100（90）","意义：Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算：开发、文档编写、运行代码和展示结果、100（90）"],
           "pycharm":["操作，100（90）",'''意义：简单易懂：Python程序看上去总是简单易懂，初学者学Python，不但入门容易，而且将来深入下去，可以编写那些非常非常复杂的程序。```
                                              开发效率高：Python有非常强大的第三方库，基本上你想通过计算机实现任何功能，Python官方库里都有相应的模块进行支持，直接下载调用后。
                                              高级语言：当你用Python语言编写程序的时候，你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
                                              可移植性：如果你小心地避免使用依赖于系统的特性，那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
                                              可扩展性：如果你需要你的一段关键代码运行得更快或者希望某些算法不公开，你可以把你的部分程序用C或C++编写，然后在你的Python程序中使用它们。
                                              可嵌入性：你可以把Python嵌入你的C/C++程序，从而向你的程序用户提供脚本功能.、100（90）''']
       },
       "Python 标准库":{
            "标准库":["操作，100（90）","函数+模块=标准库、100（85）"],
            "sys模块 ":['''sys.argv: 实现从程序外部向程序传递参数。sys.exit([arg]): 程序中间的退出，arg=0为正常退出.
                          sys.stdout.write('please:'):标准输出，引出进度条的例子
                          sys.stdout.write('please:'):标准输出，引出进度条的例子
                          sys.getrecursionlimit() :获取最大递归层数
                          sys.setrecursionlimit(1200):设置最大递归层数
                          sys.getdefaultencoding(): 获取系统当前编码，一般默认为ascii。
                          sys.setdefaultencoding(): 设置系统默认编码，执行dir（sys）时不会看到这个方法，在解释器中执行不通过，可以先执行reload(sys)，在执行 setdefaultencoding('utf8')，此时将系统默认编码设置为utf8。（见设置系统默认编码 ）
                          sys.getfilesystemencoding(): 获取文件系统使用编码方式，Windows下返回'mbcs'，mac下返回'utf-8'.
                          sys.path: 获取指定模块搜索路径的字符串集合，可以将写好的模块放在得到的某个路径下，就可以在程序中import时正确找到。
                          sys.platform: 获取当前系统平台。
                          sys.stdin,sys.stdout,sys.stderr: stdin 、100（75）''',
                      "意义：该模块提供对解释器使用或维护的一些变量的访问，以及与解释器强烈交互的函数、100（85）"],

            "os模块 ":['''os.path.isabs():判断是否为绝对路径
                          os.path.normpath(path):规范path字符串形式
                          os.path.splitext():分离文件名和扩展名
                          os.name（）:指示你正在使用的工作平台。比如对于Windows，它是'nt'，而对于Linux/Unix用户，它是'posix'。径
                          os.linesep（）:给出当前平台的行终止符。例如，Windows使用'\r\n'，Linux使用'\n'而Mac使用'\r'
                          os.sep（）:取代操作系统特定的路径分隔符
                          os.system():运行shell命令
                          os.exit():终止当前进程
                          os.getenv()：读取环境变量
                          os.putenv:设置环境变量、100（75）''',
                      "意义：os模块提供了多数操作系统的功能接口函数。当os模块被导入后，它会自适应于不同的操作系统平台，根据不同的平台进行相应的操作、100（85）"],
            "datetime模块 ":['''datetime.datetime.now()：返回系统当前时间
                                datetime.datetime.now().date()：返回当前时间的日期
                                datetime.datetime.now().time()：返回当前时间的时分秒
                                datetime.datetime.ctime()：将datetime.datetime类型转化成str类型、100（85）''',
                      "意义：datetime是python当中比较常用的时间模块，用于获取时间，时间类型之间转化等、100（85）"],
            "time模块 ":['''time.time()time.time()函数获取的是Unix时间戳。返回的是一个float类型的数值。
                           time.struct_time()：用来构建时间对象的。struct_time元组共9个元素组成，有年月日等等组成。
                           sleep(秒数)线程睡眠多长秒
                           time()获取当前时间戳，返回值是一个float类型的毫秒值
                           asctime([tuple])接受时间元组并返回一个可读的形式、100（95）''',
                      "意义：这个模块提供各种与时间相关的函数、100（80）"],
        },
       "变量、赋值、数据":{
            "变量、赋值、数据":['''name = bytes(y, encoding=‘utf-8’)
                                name = “y”
                                A = int (2);
                                B = float (2);、100（100）''',
                      "意义：变量用于存储要在计算机程序中引用和操作的信息。它们还提供了一种用描述性名称标记数据的方法，以便读者和我们自己能够更清楚地理解我们的程序。将变量看作包含信息的容器是有帮助的。它们的唯一目的是在内存中标记和存储数据。然后可以在整个程序中使用这些数据。、100（80）"]
       },
       "Python中的if语句":{
            "if语句":['''and是“并且”的意思，or是或者的意思
                        在python中嵌套if判断什么时候用到if嵌套呢，就是判断中还有做判断，最多可以嵌套5层、100（100）''',
                      "意义：if语句的职能便是判断、100（100）"]
       },
       "字符串":{
            "字符串":['''字符串用“+”号进行一个拼接 列如（"shjkdhakl"+"dhkajdkla"）
                        怎么转换为字符串呢？ A=12 B=13 zifuchuan=str(A)+str(B)
                        怎么重新转换成int型呢？ intzifuchuan=int(zifuchuan)、100（100）''',
                      "意义：字符串其实就是一个“有序”的字符序列、100（100）"]
       },
       "for循环和range内置函数":{
            "for循环和range内置函数":['''循环迭代数字变量for i in [1,2,3]: print(i)
                                      循环迭代字符串变量for ch in "yehaoju": print(ch)
                                      迭代指定的次数for num in range(5): print("hello world")
                                      range函数默认的间隔是1，range默认的起始值为0、100（100）''',
                      "意义：for循环和range内置函数配合使用 range函数生成一个从零开始的列表、100（100）"]
       },
       "Random()模块":{
            "Random()模块":['''import random dir(random) dir查看模块
                              random.randint(1,100)随机一个数、100（100）''',
                      "意义：随机的一个数、100（100）"]
       },
       "数字、字符与对象":{
            "数字、字符与对象":[
                      "意义：在Python中一切都是对象。这意味着数字、字符串、函数、模块、所有的一切都是对象。其直接的结果是所有的对象都可以赋予变量。、100（100）"]
       },
       "列表":{
            "列表":['''创建列表
                      a = [10,20,30,80]
                      a
                      b = [10,20,30,"java","python","php"]
                      b
                      append()方法 在列表的末尾添加一个对象
                      extend()方法 在列表添加一个可以迭代的对象，添加单个元素会报错
                      insert()函数 在什么位置插入一个对象如下在0处插入1
                      copy()方法与直接赋值的不同
                      pop()函数 pop() 函数用于移除列表中的一个元素（默认最后一个元素），并且返回该元素的值。
                      列表的合并+ 与 += 两个列表进行合并  用+ 用+= 来合并列表
                      使用list()创建列表: 使用 list()可以将任何可迭代的数据转化成列表。
                      range()创建整数列表 语法格式为：range([start,] end [,step])、100（80）''',
                      '''意义：你可以把列表想成是一个相关对象的索引集合，列表中的每个槽(元素)是从0开始编号的
                              与很多其他编程语言中的数组不同，python中的列表是动态的，因为他们可以根据需要扩展（和收缩）。使用列表存储任何对象之前不需要预声明列表的大小。
                              列表是可变的，因为可以在任何时间通过增加、删除或修改对象的类型，如果你愿意，完全可以在一个列表中混合不同类型的对象。、100（100）'''],
            "列表切片":['''start(开始)、stop(结束值)、step步长值
                          join()方法、100（85）''']
       },
       #元组的使用场景：1.函数的参数和返回值，一个函数可以接收任意多个参数，一次返回多个数据；2.格式字符串；3.让列表不可以被修改，保护数据
       "元组":{
            "元组":['''index() 方法用于从元组中找出某个对象第一个匹配项的索引位置，如果这个对象不在元组中会报一个异常。
                      count() 方法用于统计某个元素在元组中出现的次数。、100（100）''',
                      "意义：随机的一个数、100（100）"]
       },
       "While循环":{
            "While循环":['''100（80）''',
                      "意义：重点关注的是 需要加入循环结束条件，然后break、100（100）"]
       },
       "字典":{
            "字典":['''cmp(dict1, dict2)比较两个字典元素。
                      len(dict)计算字典元素个数，即键的总数。
                      str(dict)输出字典可打印的字符串表示。
                      type(variable)返回输入的变量类型，如果变量是字典就返回字典类型。
                      用 in 操作符来检查一个字典中是否存在这个键
                      用not in 来判断键是否在字典中，若不在初始化一个0。
                      setdefault( key, value)的表示行书
                      setdefaut 是完成2行if / not in 语句所做的工作，不过用的是一行代码。100（80）''',
                      "意义：字典的key必须是不可变类型，也成为可hash类型，并且字典是无序的、100（100）"]
       },
       "format() 格式化函数":{
            "format() 格式化函数":['''str.format()基本语法是通过 {} 和 : 来代替以前的 % 100（80）''',
                      "意义：新增了一种格式化字符串的函数 str.format()，它增强了字符串格式化的功能。、100（100）"]
       },
       "集合":{
            "集合":['''union合并集合
                      defference()哪些不是共有的元素
                      intersection()报告共同对象。 100（80）''',
                      "意义：格式：集合名 = {元素1，元素2} 集合是无序的 不支持下标索引。集合是可变的数据类型。集合中的元素是唯一的。集合一般用于元组或者列表中的元素去重。定义一个空的集合、100（100）"]
       },
       "函数":{
            "函数的传递参数":['''greet_user(username) #username 为形参；函数完成其工作时所需要的信息。
                      greet_user(“youge") #“youge"为实参；实参是调用函数时传递给函数的信息。100（80）''',
                      "意义：函数是逻辑结构化和过程化的一种编程方法。、100（100）"],
            "函数——添加注释":['''使用三重引号字符串””” str“””，这个称为docstring
                               使用单行注释，这种注释有种 #  符号前缀100（100）''',
                      "意义：注释。、100（100）"],
            "位置实参":['''确认函数调用中实参的顺序与函数定义形参的顺序一致 100（100）''',
                      "意义：、100（100）"],
            "关键字参数与默认值":['''100（100）''',
                      "意义：、100（100）"],
            "函数的返回值":[''' return 100（100）''',
                      "意义：、100（100）"],
            "传递任意数量的实参":[''' *args，传入多个参数，转化成元组。*args的值是一个封装好的空元组，并将所有接收到的值都封装在这个元组里。
                                  **kwargs，把关键字参数，转化成字典。100（100）''',
                      "意义：、100（100）"],
            "函数与模块":[''' from 模块名称 import 函数名称 导入模块
                            from 模块名 import * 使用星号（*）运算符可以让Python导入模块中的所有函数。100（100）''',
                      "意义：、100（100）"],
       },